
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2009, Perry L Miller IV
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//  Derived from earlier work by Adam Kubach and Perry Miller found here:
//  http://sourceforge.net/projects/cadkit/
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Class that represents a button.
//
///////////////////////////////////////////////////////////////////////////////

#include "Helios/Menus/Button.h"

#include "Usul/Functions/NoThrow.h"

using namespace Helios::Menus;


///////////////////////////////////////////////////////////////////////////////
//
//  Destructor
//
///////////////////////////////////////////////////////////////////////////////

Button::~Button()
{
  USUL_TRY_BLOCK
  {
    _icon.clear();
    _status.clear();
    _command = Command::RefPtr ( 0x0 );
    _update = Update::RefPtr ( 0x0 );
  }
  USUL_DEFINE_CATCH_BLOCKS ( "1106602711" );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the command.
//
///////////////////////////////////////////////////////////////////////////////

Button::Command::RefPtr Button::commandGet() const
{
  Guard guard ( this );
  return _command;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the update functor.
//
///////////////////////////////////////////////////////////////////////////////

Button::Update::RefPtr Button::updateGet() const
{
  Guard guard ( this );
  return _update;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the text.
//
///////////////////////////////////////////////////////////////////////////////

std::string Button::textGet() const
{
  return BaseClass::name();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the icon.
//
///////////////////////////////////////////////////////////////////////////////

std::string Button::iconGet() const
{
  Guard guard ( this );
  return _icon;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the status text.
//
///////////////////////////////////////////////////////////////////////////////

std::string Button::statusGet() const
{
  Guard guard ( this );
  return _status;
}
